package ru.lukyanets.transmission.protocol.model.torrent;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Getter;
import lombok.Setter;

/**
 * @author slukyanets
 */
@SuppressWarnings({"unused", "WeakerAccess"})
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonPropertyOrder({
        "announce",
        "announceState",
        "downloadCount",
        "hasAnnounced",
        "hasScraped",
        "host",
        "id",
        "isBackup",
        "lastAnnouncePeerCount",
        "lastAnnounceResult",
        "lastAnnounceStartTime",
        "lastAnnounceSucceeded",
        "lastAnnounceTime",
        "lastAnnounceTimedOut",
        "lastScrapeResult",
        "lastScrapeStartTime",
        "lastScrapeSucceeded",
        "lastScrapeTime",
        "lastScrapeTimedOut",
        "leecherCount",
        "nextAnnounceTime",
        "nextScrapeTime",
        "scrape",
        "scrapeState",
        "seederCount",
        "tier"
})
@Getter
@Setter
public class TrackerStat {

    @JsonProperty("announce")
    private String announce;
    @JsonProperty("announceState")
    private int announceState;
    @JsonProperty("downloadCount")
    private long downloadCount;
    @JsonProperty("hasAnnounced")
    private boolean hasAnnounced;
    @JsonProperty("hasScraped")
    private boolean hasScraped;
    @JsonProperty("host")
    private String host;
    @JsonProperty("id")
    private int id;
    @JsonProperty("isBackup")
    private boolean isBackup;
    @JsonProperty("lastAnnouncePeerCount")
    private int lastAnnouncePeerCount;
    @JsonProperty("lastAnnounceResult")
    private String lastAnnounceResult;
    @JsonProperty("lastAnnounceStartTime")
    private int lastAnnounceStartTime;
    @JsonProperty("lastAnnounceSucceeded")
    private boolean lastAnnounceSucceeded;
    @JsonProperty("lastAnnounceTime")
    private int lastAnnounceTime;
    @JsonProperty("lastAnnounceTimedOut")
    private boolean lastAnnounceTimedOut;
    @JsonProperty("lastScrapeResult")
    private String lastScrapeResult;
    @JsonProperty("lastScrapeStartTime")
    private int lastScrapeStartTime;
    @JsonProperty("lastScrapeSucceeded")
    private boolean lastScrapeSucceeded;
    @JsonProperty("lastScrapeTime")
    private int lastScrapeTime;
    @JsonProperty("lastScrapeTimedOut")
    private boolean lastScrapeTimedOut;
    @JsonProperty("leecherCount")
    private int leecherCount;
    @JsonProperty("nextAnnounceTime")
    private int nextAnnounceTime;
    @JsonProperty("nextScrapeTime")
    private int nextScrapeTime;
    @JsonProperty("scrape")
    private String scrape;
    @JsonProperty("scrapeState")
    private int scrapeState;
    @JsonProperty("seederCount")
    private int seederCount;
    @JsonProperty("tier")
    private int tier;
    @JsonProperty("sitename")
    private String sitename;
}
